Exception raised when trying to operate on a snap that I don't own nor collaborate with
Metadata
Current evaluation
No evaluation has been recorded for this issue yet.
Issue body
While doing some testing about proper snap access via the Store APIs, I used snpacraft to try to release a revision to a channel, for a snap I don't own nor I collaborate with. Snapcraft failed, but the errors is ugly and an end-user would not understand what went wrong.
Example:
snapcraft release isdtest-only 1 edge
Error in sys.excepthook:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/snapcraft/cli/_errors.py", line 55, in exception_handler
echo.error(str(exception))
File "/usr/lib/python3/dist-packages/snapcraft/internal/errors.py", line 33, in __str__
return self.fmt.format([], **self.__dict__)
KeyError: '"status"'
Original exception was:
Traceback (most recent call last):
File "/usr/bin/snapcraft", line 9, in <module>
load_entry_point('snapcraft==2.35', 'console_scripts', 'snapcraft')()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 542, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2569, in load_entry_point
return ep.load()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2229, in load
return self.resolve()
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py", line 2235, in resolve
module = __import__(self.module_name, fromlist=['__name__'], level=0)
File "/usr/lib/python3/dist-packages/snapcraft/cli/__main__.py", line 19, in <module>
run(prog_name='snapcraft')
File "/usr/lib/python3/dist-packages/click/core.py", line 716, in __call__
return self.main(*args, **kwargs)
File "/usr/lib/python3/dist-packages/click/core.py", line 696, in main
rv = self.invoke(ctx)
File "/usr/lib/python3/dist-packages/click/core.py", line 1060, in invoke
return _process_result(sub_ctx.command.invoke(sub_ctx))
File "/usr/lib/python3/dist-packages/click/core.py", line 889, in invoke
return ctx.invoke(self.callback, **ctx.params)
File "/usr/lib/python3/dist-packages/click/core.py", line 534, in invoke
return callback(*args, **kwargs)
File "/usr/lib/python3/dist-packages/snapcraft/cli/store.py", line 156, in release
snapcraft.release(snap_name, revision, channels.split(','))
File "/usr/lib/python3/dist-packages/snapcraft/_store.py", line 534, in release
channels = store.release(snap_name, revision, release_channels)
File "/usr/lib/python3/dist-packages/snapcraft/storeapi/__init__.py", line 240, in release
self.sca.snap_release, snap_name, revision, channels)
File "/usr/lib/python3/dist-packages/snapcraft/storeapi/__init__.py", line 181, in _refresh_if_necessary
return func(*args, **kwargs)
File "/usr/lib/python3/dist-packages/snapcraft/storeapi/__init__.py", line 627, in snap_release
raise errors.StoreReleaseError(data['name'], response)
snapcraft.storeapi.errors.StoreReleaseError: <exception str() failed>
The response returned from the store in this case is:
(Pdb) print(response.json())
{'detail': 'Permission is required: package_upload', 'type': 'devportal:v1:macaroon-permission-required', 'title': 'Macaroon missing required permission.', 'permission': 'package_upload', 'status': 403, 'error_list': [{'message': 'Permission is required: package_upload', 'code': 'macaroon-permission-required'}]}
Evaluation history
No evaluation history available.